
class Solution {
public:
    /*因为是string类型，不能直接使用，需要转换为int类型来计算*/
    int toInt(string a)//将字符串转为数字的函数
    {
        int i=0;
        int res=0;
        if(a[0]=='-')//如果是负数
        {
            i=1;
        }
        for(i;i<a.length();i++)//利用asc码转换
        {
            res*=10;
            res+=a[i]-48;
        }
        if(a[0]=='-')//负数返回负数
        {
            return -res;
        }
        return res;
    }
    int evalRPN(vector<string>& tokens) {
    stack<int>a;//数字栈
    for(int i=0;i<tokens.size();i++)//遍历后缀表达式
    {
        char t=tokens[i][0];
        int c1,c2,c3;//用于计算
        //遇到符号弹出两个数字进行运算，再将结果压入数字栈，遇到数字则将string转换为数字后压入数字栈
        if(t=='+')
        {
            c1=a.top();
            a.pop();
            c2=a.top();
            a.pop();
            c3=c1+c2;
            a.push(c3);
        }
        else if(t=='-'&&tokens[i].size()==1)
        {
            c1=a.top();
            a.pop();
            c2=a.top();
            a.pop();
            c3=c2-c1;
            a.push(c3);   
        }
        else if(t=='*')
        {
            c1=a.top();
            a.pop();
            c2=a.top();
            a.pop();
            c3=c1*c2;
            a.push(c3);
        }
        else if(t=='/')
        {
            c1=a.top();
            a.pop();
            c2=a.top();
            a.pop();
            c3=c2/c1;
            a.push(c3);
        }
        else
        {
            a.push(toInt(tokens[i]));
        }
    }
        int res=a.top();
        return res;
    }
};